In a virtualization environment virtualizing software (typically called a hypervisor or virtual machine monitor) is installed on the computer system. The hypervisor multiplexes processors and memory among each of plurality of virtual machine partitions. In some virtualization systems, one of the virtual machine partitions can be a parent partition which has access to hardware devices and can virtualize hardware requests of the other virtual machine partitions.
In order for the parent partition to virtualize hardware requests of the other virtual machine partitions, data is passed between the parent partition and each of the child partitions. In some instances, shared memories can be used by child partitions to facilitate communication between a parent partition and the child partitions. A system that is used to communicate between partions is sometimes referred to as a virtual machine bus system.
One difficulty with virtual machine systems is that, when one partition writes data to a shared memory, another partition does not know that data has been written to the shared memory. One simple solution to this issue is to have both the parent partition and child partition regularly check the shared memory. However, constant checking of shared memories consumes a lot of processing resources and is inefficient.